// var 特性

// 1
// 全局作用域或者函数作用域, 只有函数才能吧 var 作用域截断
// function myFn(params) {
//     var num = 1
// }
// console.log(num);

// 2
// 变量提升, 先使用后声明也不会报错, 因为js会将声明过程优先提到代码最上方执行
// var str;
// console.log(str);
// var str = 'hello'

// 一开始, i = 0 设置定时器
// i = 1, i = 2 到 i = 4 共五个等待中的定时器
// 最后一次, i + 1 发现已经不满足条件, 就不再往下循环
// 这时 200 毫秒的五个定时器都到期, 于是开始打印
// for(var i = 0; i < 5; i++) {
//     setTimeout(() => {
//         console.log(i);
//     }, 200);
// }

// const / let
// 都可以定义数据, 只有块级作用域只在一个大括号内生效
// 其中 let 定义可变的量, const 定义常量
// let 哪怕可以变, 但是不可以重新定义
// if (1>0) {
//     let num = 10
// }
// console.log(num);
// const num = 10
// num = 100

// let num = 1
// num = 2

// for(let i = 0; i < 5; i++) {
//     setTimeout(() => {
//         console.log(i);
//     }, 200);
// }

// 数组的过滤函数
// filter, 可以通过传入一个回调函数作为判断依据
// 过滤过程中, js 会将数组里面的每个元素遍历循环, 作为参数执行回调
// 只有结果为真的数据可以留下, 其他都被过滤, 最终会返回一个新数据
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 希望得到比5大的数
const newArr = arr.filter(function(item){
    return item > 5
})

console.log(newArr);